/**
 * 客户端
 */
const mqtt = require('mqtt')

const host = 'localhost'
const port = '8081'

// 随机生成的客户端id - 也可以用 uuid 这个库生成
const clientId = `mqtt_${Math.random().toString(16).slice(3)}`

const connectUrl = `mqtt://${host}:${port}`
const client = mqtt.connect(connectUrl, {
  clientId,
  clean: true,
  connectTimeout: 4800,
  username: 'emqx',
  password: 'public',
  reconnectPeriod: 1000
})

client.on('connect', () => {
  console.log(`连接成功`)

  // 订阅主题
  client.subscribe('presence', (err, granted) => {
    console.log('granted')
    console.log(granted)
    console.log(`==========================`)
    if (err) {
      console.log('订阅错误或者客户端断开链接时发生')
      console.log(err)
    }

    console.log('presence - 订阅')
  })

  client.subscribe('sayName')

  // 向服务器发送消息  消息的主题是hi, 消息的内容是hello mqtt
  // 客户端发送了某个topic 类型的消息，服务端需要订阅才能接收到
  // setInterval(() => {
  //   client.publish('hi', 'hello mqtt')
  // }, 1000);

  // 发布消息 - 需要服务端订阅 presence 类消息
  client.publish('presence', "我是消息的内容", { qos: 0, retain: false }, err => {
    if (err) {
      console.error(err)
    }
  })
})

client.on('message', (topic, message, packet) => {
  console.log('topic--->', topic)
  console.log("消息体")
  console.log(message.toString())
  console.log(packet)
  // client.end()
})

